using DesignPattern.Strategy.Refactored;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;

namespace DesignPattern.UnitTests.Strategy.Refactored
{
    public class BirdTester
    {
        [TestFixture]
        public class EagleTester
        {
            [Test]
            public void Eagle_should_fly_fast()
            {
                ICanFly eagle = new Eagle();
                Assert.That(eagle.Fly(), Is.EqualTo("FAST FLY"));
            }
            [Test]
            public void Eagle_should_eat_grass()
            {
                ICanEat eagle = new Eagle();
                Assert.That(eagle.Eat(), Is.EqualTo("EAT GRASS"));
            }
        }

        [TestFixture]
        public class ParrotTester
        {
            [Test]
            public void Parrot_should_fly_slow()
            {
                ICanFly parrot = new Parrot();
                Assert.That(parrot.Fly(), Is.EqualTo("SLOW FLY"));
            }

            [Test]
            public void Parrot_should_eat_grass()
            {
                ICanEat parrot = new Parrot();
                Assert.That(parrot.Eat(), Is.EqualTo("EAT GRASS"));
            }
        }

        [TestFixture]
        public class CrowTester
        {
            [Test]
            public void Crow_should_fly_fast()
            {
                ICanFly crow = new Crow();
                Assert.That(crow.Fly(), Is.EqualTo("FAST FLY"));
            }

            [Test]
            public void Crow_should_eat_grass()
            {
                ICanEat crow = new Crow();
                Assert.That(crow.Eat(), Is.EqualTo("EAT FRUITS"));
            }
        }

        [TestFixture]
        public class SparrowTester
        {
            [Test]
            public void Sparrow_should_fly_slow()
            {
                ICanFly sparrow = new Sparrow();
                Assert.That(sparrow.Fly(), Is.EqualTo("SLOW FLY"));
            }

            [Test]
            public void Sparrow_should_eat_fruits()
            {
                ICanEat sparrow = new Sparrow();
                Assert.That(sparrow.Eat(), Is.EqualTo("EAT FRUITS"));
            }
        }

        [TestFixture]
        public class PlaneTester
        {
            [Test]
            public void Plane_should_fly_fast()
            {
                ICanFly plane = new Plane();
                Assert.That(plane.Fly(), Is.EqualTo("FAST FLY"));
            }
        }
    }
}